from flask import g
from flask_httpauth import HTTPBasicAuth

auth = HTTPBasicAuth()

"""
auth的username 登录时用户名，登录后是用token
"""
# 编写回调函数, 当进行登录时，会回调此函数
@auth.verify_password
def verify_password(username, password):
    print("username: " + username)
    print("password: " + password)
    from data_base.user_table import User
    user = User.check_token(username)
    # 如果检验结果错误或超时，就认为此时是登录接口
    # 如果检验成功，就认为此时是其它接口（获取用例）
    if not user:
        # 查询数据库存中是否存在用户，返回实例化的User赋值给user
        user = User.query.filter_by(username=username).first()
        # print(user, type(user))
        if not user or user.password != password:
            return False
    # 如果 token 符合要求，或者用户名，密码正确
    # flask 的 g 代表 flask 的本地线程变量 → flask 线程可以共享使用
    g.user = user
    return True

